#ifndef SSIPOOL_H_
#define SSIPOOL_H_

#include <vector>
#include "PackageUtils.h"
#include "../../core/Buddy.h"

namespace Impp
{

enum SsiType{

	 SSI_BUDDY_RECORD  = 0x0000, 		//Buddy record (name: uin for ICQ and screenname for AIM)
	 SSI_GROUP_RECORD  = 0x0001,		//Group record
	 SSI_VISIBLE_LIST = 0x0002, 		//Permit record ("Allow" list in AIM, and "Visible" list in ICQ)
	 SSI_INVISIBLE_LIST = 0x0003, 		//Deny record ("Block" list in AIM, and "Invisible" list in ICQ)
	 SSI_PERMIT_DENY_SETTINGS = 0x0004, //Permit/deny settings or/and bitmask of the AIM classes
	 SSI_PRESENCE_INGO = 0x0005, 	 	//Presence info (if others can see your idle status, etc)
	 SSI_UNKNOWN =  0x0009, 			//Unknown. ICQ2k shortcut bar items ?
	 SSI_IGNORE_LIST_RECORD = 0x000E, 	//Ignore list record.
	 SSI_LAST_UPDATE_TIME =  0x000F, 	//Last update date (name: "LastUpdateDate").
	 SSI_NON_ICQ_BUDDY = 0x0010, 	 	//Non-ICQ contact (to send SMS). Name: 1#EXT, 2#EXT, etc
	 SSI_IMPORT_TIME = 0x0013, 			//Item that contain roster import time (name: "Import time")
	 SSI_OWN_AVATAR = 0x0014 	  		//Own icon (avatar) info. Name is an avatar id number as text
};

class SsiPool
{
private:
	std::vector<Item>* items;
	
public:
	SsiPool();
	std::vector<Item>* getSsiContainer();
	Item* getItem(Buddy* buddy);
	Item* getItem(Group* group);
	Item* getItem(const SsiType & type);
	Item* getItem(const SsiType & type,const wxString & itemName);
	bool deleteItem(Item* itemToDelete);
	int getPrivacySetting();
	word getNewItemId();
	void reset();
	virtual ~SsiPool();
};

}

#endif /*SSIPOOL_H_*/
